﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace CDSBDemandControl.Model
{
    [Serializable]
    public class DemandModel:DemandModelBase
    {
        public DemandModel() 
        {
            PlanningStateImg = string.Empty;
            PlanningStateRemarks = string.Empty;
        }

        public DemandModel(DemandModel d)
        {
            this.ActiveControlUrL = d.ActiveControlUrL;
            this.AssignedTo = d.AssignedTo;
            this.Conclude = d.Conclude;
            this.CreatedBy = d.CreatedBy;
            this.DataIncFila = d.DataIncFila;
            this.DaysPast = d.DaysPast;
            this.EstimatedConclude = d.EstimatedConclude;
            this.EstimatedHours = d.EstimatedHours;
            this.EstimatedStart = d.EstimatedStart;
            this.Gravity = d.Gravity;
            this.ID = d.ID;
            this.Origin = d.Origin;
            this.PlanningStateImg = d.PlanningStateImg;
            this.PlanningStateRemarks = d.PlanningStateRemarks;
            this.Priority = d.Priority;
            this.Project = d.Project;
            this.Reason = d.Reason;
            this.Remedy = d.Remedy;
            this.Responsible = d.Responsible;
            this.Revision = d.Revision;
            this.Start = d.Start;
            this.State = d.State;
            this.StatusColor = d.StatusColor;
            this.Title = d.Title;
            this.UsedHours = d.UsedHours;
            this.WorkItemType = d.WorkItemType;
        }

        public DemandModel(DemandModel d, string State, string Reason)
        {
            this.ActiveControlUrL = d.ActiveControlUrL;
            this.AssignedTo = d.AssignedTo;
            this.Conclude = d.Conclude;
            this.CreatedBy = d.CreatedBy;
            this.DataIncFila = d.DataIncFila;
            this.DaysPast = d.DaysPast;
            this.EstimatedConclude = d.EstimatedConclude;
            this.EstimatedHours = d.EstimatedHours;
            this.EstimatedStart = d.EstimatedStart;
            this.Gravity = d.Gravity;
            this.ID = d.ID;
            this.Origin = d.Origin;
            this.PlanningStateImg = d.PlanningStateImg;
            this.PlanningStateRemarks = d.PlanningStateRemarks;
            this.Priority = d.Priority;
            this.Project = d.Project;
            this.Reason = Reason;
            this.Remedy = d.Remedy;
            this.Responsible = d.Responsible;
            this.Revision = d.Revision;
            this.Start = d.Start;
            this.State = State;
            this.StatusColor = d.StatusColor;
            this.Title = d.Title;
            this.UsedHours = d.UsedHours;
            this.WorkItemType = d.WorkItemType;
        }

        public string PlanningStateImg { get; set; }
        public string PlanningStateRemarks { get; set; }        
        public EnumOrigin Origin { get; set; }
        public EnumGravity Gravity { get; set; }
        public EnumPriority Priority { get; set; }
        public DemandCollection Revision { get; set; }
        public DateTime? DataIncFila { get; set; }
        public DateTime? Start { get; set; }
        public DateTime? Conclude { get; set; }
        public DateTime? EstimatedStart { get; set; }
        public DateTime? EstimatedConclude { get; set; }
        public string Justification { get; set; }
        public bool IsSimultaneous { get; set; }

        #region Em avaliação de demanda
        public DateTime AssessingDemandPlannedStartDate { get; set; }
        public DateTime AssessingDemandPlannedEndDate { get; set; }
        public Decimal AssessingDemandPlannedTime { get; set; }
        public DateTime AssessingDemandRealizedStartDate { get; set; }
        public DateTime AssessingDemandRealizedEndDate { get; set; }
        public Decimal AssessingDemandRealizedTime { get; set; }        
        #endregion

        #region Especificação(Geral)
        public DateTime GeneralPlannedStartDate { get; set; }
        public DateTime GeneralPlannedEndDate { get; set; }
        public Decimal GeneralPlannedTime { get; set; }
        public Complexity GeneralPlannedComplexity { get; set; }
        public DateTime GeneralRealizedStartDate { get; set; }
        public DateTime GeneralRealizedEndDate { get; set; }
        public Decimal GeneralRealizedTime { get; set; }
        public Int32 GeneralRealizedEvolutions { get; set; }
        #endregion

        #region Especificação(Artefatos)(Artefatos de Testes)
        public DateTime MEDRTFPlannedStartDate { get; set; }
        public DateTime MEDRTFPlannedEndDate { get; set; }
        public Decimal MEDRTFPlannedTime { get; set; }
        public Boolean MEDRTFPlannedMassData { get; set; }
        public DateTime MEDRTFRealizedStartDate { get; set; }
        public DateTime MEDRTFRealizedEndDate { get; set; }
        public Decimal MEDRTFRealizedTime { get; set; }
        public Int32 MEDRTFRealizedEvolutions { get; set; }
        #endregion

        #region Especificação(Artefatos)(Diagramação)
        public DateTime XAMLPlannedStartDate { get; set; }
        public DateTime XAMLPlannedEndDate { get; set; }
        public Decimal XAMLPlannedTime { get; set; }
        public DateTime XAMLRealizedStartDate { get; set; }
        public DateTime XAMLRealizedEndDate { get; set; }
        public Decimal XAMLRealizedTime { get; set; }
        public Int32 XAMLRealizedEvolutions { get; set; }
        #endregion

        #region Arquitetura
        public DateTime ArchitecturePlannedStartDate { get; set; }
        public DateTime ArchitecturePlannedEndDate { get; set; }
        public Decimal ArchitecturePlannedTime { get; set; }
        public Complexity ArchitecturePlannedComplexity { get; set; }
        public DateTime ArchitectureRealizedStartDate { get; set; }
        public DateTime ArchitectureRealizedEndDate { get; set; }
        public Decimal ArchitectureRealizedTime { get; set; }
        public Int32 ArchitectureRealizedEvolutions { get; set; }
        #endregion

        #region Desenvolvimento
        public DateTime DevelopmentPlannedStartDate { get; set; }
        public DateTime DevelopmentPlannedEndDate { get; set; }
        public Decimal DevelopmentPlannedTime { get; set; }
        public Complexity DevelopmentPlannedComplexity { get; set; }
        public DateTime DevelopmentRealizedStartDate { get; set; }
        public DateTime DevelopmentRealizedEndDate { get; set; }
        public Decimal DevelopmentRealizedTime { get; set; }
        public Int32 DevelopmentRealizedEvolutions { get; set; }
        #endregion

        #region Testes
        public DateTime TestsPlannedStartDate { get; set; }
        public DateTime TestsPlannedEndDate { get; set; }
        public Decimal TestsPlannedTime { get; set; }
        public DateTime TestsRealizedStartDate { get; set; }
        public DateTime TestsRealizedEndDate { get; set; }
        public Decimal TestsRealizedTime { get; set; }
        public Int32 TestCiclo { get; set; }
        #endregion

        #region Aceite
        public DateTime AcceptedPlannedStartDate { get; set; }
        public DateTime AcceptedPlannedEndDate { get; set; }
        public Decimal AcceptedPlannedTime { get; set; }
        public DateTime AcceptedRealizedStartDate { get; set; }
        public DateTime AcceptedRealizedEndDate { get; set; }
        public Decimal AcceptedRealizedTime { get; set; }
        public Int32 AcceptedRealizedEvolutions { get; set; }
        #endregion

        #region Release
        public DateTime ReleasePlannedStartDate { get; set; }
        public DateTime ReleasePlannedEndDate { get; set; }
        public Decimal ReleasePlannedTime { get; set; }
        public DateTime ReleaseRealizedStartDate { get; set; }
        public DateTime ReleaseRealizedEndDate { get; set; }
        public Decimal ReleaseRealizedTime { get; set; }
        public Int32 ReleaseRealizedEvolutions { get; set; }
        #endregion
    }
}
